package main

// 方法声明
func Add[T int | int32 | float32 | float64](a, b T) T {
	return a + b
}

func IAdd(a, b interface{}) interface{} {
	switch a.(type) {
	case int:
		return a.(int) + b.(int)
	}
	return nil
}

// map 使用
type Mymap[KEY int | string, VAULE float32 | float64] map[KEY]VAULE

type Man struct {
}

type Women struct {
}

// 结构体使用
type Company[T Man | Women] struct {
	Name string
	CEO  T
}

// 管道声明
type MyChannel[T int | string] chan T

// 类型嵌套
type WowStruct[T string | int, S []T] struct {
	A T
	B S
}

// 错误使用
// 类型参数不能单独使用
// type CompanyType[T int | string] T
type CompanyType[T int | string] []T

// 不能使用指针类型
// type CompanyType2 [T*int | string][]T
type CompanyType2[T interface{ *int } | string] []T

//匿名结构体不支持泛型
//泛型不支持Switch判断
//匿名函数不支持泛型

func main() {

}
